home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Spanish Scene 1
/
SpanishScene1.iso
/
spanish pack n°1 by llfb
/
--llfb--
/
programas
/
sources1.dms
/
sources1.adf
/
SOURCES
/
Vectores
/
FIRE-CREW_Cube.ASM
< prev
next >
Wrap
Assembly Source File
|
1996-06-04
|
12KB
|
381 lines
;FI-REFILL BY LADO OF FI-RE CREW IN 1992 !
; org $25000
; load $25000
Section Roman,code_c
; >extern 'DF0:raytr.dat',sinus
j lea $30000,a0 ;memoria torlese
lo clr.l (a0)+
cmp.l #$70000,a0
bcs lo
lea $dff000,a6 ;custom
aga move.l 4(a6),d0
lsr.l #8,d0
cmp.w #$130,d0
bne aga
move.w #$7fff,$96(a6) ;clear DMACON
move.w #$7fff,$9a(a6) ;clear INTENA
move.l #copper,$84(a6)
clr.w $8a(a6) ;start copper
move.w #$87d0,$96(a6) ;DMACON
move.w #$c010,$9a(a6)
h1 bsr wait ;waitblitter
aaa move.l 4(a6),d0
lsr.l #8,d0
cmp.w #$60,d0
bne aaa
bsr filler
btst #6,$bfe001
bne h1
bsr wait
move.w #$7fff,$96(a6)
move.w #$7fff,$9a(a6)
clr.w $88(a6) ;start original copper
move.w #$87f0,$96(a6)
move.w #$e02c,$9a(a6)
clr.l d0
rts ;END
filler add.w #4,addx ;xszog novelese
and.w #$1ff,addx
add.w #6,addy ;yszog novelese
and.w #$1ff,addy
add.w #4,addz ;zszog novelese
and.w #$1ff,addz
lea coords(pc),a0 ;kocka pontjainak x,y,z koordinatai
lea sinus(pc),a1 ;sinus ertekek
lea $80(a1),a3 ;cosinus ertekek
lea tarolo(pc),a2 ;2D x,y letarolasa
lea addx(pc),a4 ;szogek
moveq #61,d7 ;
h3 movem.w (a0)+,d0/d1/d6 ;x,y,z
move.w 4(a4),d5 ;Zszog
move.w (a3,d5.w),d4 ;cos ertek
move.w (a1,d5.w),d5 ;sin ertek
move.w d0,d2 ;c1
move.w d1,d3 ;c2
muls d4,d0 ;c1*cos(c0angle)
muls d5,d1 ;c2*sin(c0angle)
muls d4,d3 ;c2*cos(c0angle)
muls d5,d2 ;c1*sin(c0angle)
sub.l d1,d0 ;c1*cos(c0angle)-c2*sin(c0angle)
add.l d2,d3 ;c2*cos(c0angle)+c1*sin(c0angle)
add.l d0,d0
add.l d3,d3
swap d0 ;uj c1
swap d3 ;uj c2
move.w d6,d1
move.w d0,d6 ;X tarolasa
move.w d3,d0 ;Y
move.w (a4),d5 ;Xszog
move.w (a3,d5.w),d4 ;cos ertek
move.w (a1,d5.w),d5 ;sin ertek
move.w d0,d2 ;c1
move.w d1,d3 ;c2
muls d4,d0 ;c1*cos(c0angle)
muls d5,d1 ;c2*sin(c0angle)
muls d4,d3 ;c2*cos(c0angle)
muls d5,d2 ;c1*sin(c0angle)
sub.l d1,d0 ;c1*cos(c0angle)-c2*sin(c0angle)
add.l d2,d3 ;c2*cos(c0angle)+c1*sin(c0angle)
add.l d0,d0
add.l d3,d3
swap d0 ;uj c1
swap d3 ;uj c2
move.w d6,d1
move.w d0,d6 ;uj Y tarolasa
move.w d3,d0 ;Z
move.w 2(a4),d5 ;Yszog
move.w (a3,d5.w),d4 ;cos ertek
move.w (a1,d5.w),d5 ;sin ertek
move.w d0,d2 ;c1
move.w d1,d3 ;c2
muls d4,d0 ;c1*cos(c0angle)
muls d5,d1 ;c2*sin(c0angle)
muls d4,d3 ;c2*cos(c0angle)
muls d5,d2 ;c1*sin(c0angle)
sub.l d1,d0 ;c1*cos(c0angle)-c2*sin(c0angle)
add.l d2,d3 ;c2*cos(c0angle)+c1*sin(c0angle)
add.l d0,d0
add.l d3,d3
swap d0 ;uj c1
swap d3 ;uj c2
move.w d6,d1
exg d0,d3 ;X csere Z-vel Z=d3
moveq #11,d6 ;lekepezes 2D-re
move.w #$660,d2
sub.w d3,d2 ;$444-Z
muls d2,d0 ;z'*x
asr.l d6,d0 ;z'*x/2048=2D X
muls d2,d1 ;z'*y
asr.l d6,d1 ;z'*y/2048=2D Y
add.w #150,d0 ;X=X+150 kozepre a kepernyon
add.w #100,d1 ;Y=Y+100
move.w d0,(a2)+ ;2D X tarolasa
move.w d1,(a2)+ ;2D Y tarolasa
dbf d7,h3 ;8-szor
move.l #$ffff8000,$72(a6) ;vonalhuzashoz standard ertekek
move.l #-1,$44(a6)
move.w #120,$60(a6) ;kepernyo szelessege
eor.w #$8000,erno+2 ;kepernyo csere
eor.w #$8000,copscr ;csere a copperben is
eor.w #$8000,copscr+4
eor.w #$8000,copscr+8
move.l erno(pc),a0
add.l #28+[199*$78],a0
bsr wait
move.l #$01000002,$40(a6)
move.w #$28-[[11*16]/8],$66(a6)
move.l a0,$54(a6)
move.w #$8a0b,$58(a6)
lea tarolo(pc),a1 ;2D x,y ertekek
lea meghat(pc),a2 ;structure
lea sinus+$400(pc),a3 ;sor kezdopontja /0-f/ + $a4a or $b4a
lea sinus+$680(pc),a5 ;szelesseg/2/ es vonal hossz values
move.w (a2)+,lap ;lapok szama /6/
h7 move.l (a2)+,d7 ;hany pontot kosson ossze
move.l (a2)+,a4 ;oszzekotesi sorrend
move.l (a2)+,scr ;melyik kepernyore
move.l (a2)+,col ;mutato a szinpalettara,melyik szin a copp.
move.l erno(pc),a0 ;ide rajzol
movem.w (a4),d0/d1/d2 ;lathatosag eldontese
move.w (a1,d1.w),d3 ;x1
sub.w (a1,d0.w),d3 ;X1-X0
move.w 2(a1,d2.w),d4 ;y2
sub.w 2(a1,d1.w),d4 ;Y2-Y1
move.w 2(a1,d1.w),d5 ;y1
sub.w 2(a1,d0.w),d5 ;Y1-Y0
move.w (a1,d2.w),d6 ;x2
sub.w (a1,d1.w),d6 ;X2-X1
mulu d4,d3 ;(y2-y1)(x1-x0)=d3
mulu d6,d5 ;(y1-y0)(x2-x1)=d5
sub.w d5,d3
bmi vakon ;nem latszik
moveq #10,d5 ;1024
lsr.w d5,d3 ;d3=d3/1024
and.w #$f,d3 ;also 4 bit levalasztasa
add.w d3,d3 ;word
movem.l a0/a1,-(a7)
lea colors(pc),a0 ;szinek
lea copcol(pc),a1 ;copperben a szinek
add.w col(pc),a0 ;uj szin
add.w col+2(pc),a1 ;melyik szin a copperban
move.w (a0,d3.w),d3 ;uj szin bekerese
move.w d3,(a1) ;beirasa a copperbe
movem.l (a7)+,a0/a1
move.w (a4)+,d5 ;1.pont
move.w (a1,d5.w),d0 ;x1 koordinata
move.w 2(a1,d5.w),d1 ;y1 koordinata
bsr lines ;vonalhuzo
vakon subq.w #1,lap ;lapszam csokkentes
bne h7 ;van meg ?
bra fill ;nincs , go fill
lines move.w (a4)+,d5 ;kovetkezo pont
move.w (a1,d5.w),d2 ;x2
move.w 2(a1,d5.w),d3 ;y2
movem.w d2/d3,-(a7) ;kovetkezo pont latarolasa
cmp.w d1,d3 ;y2-y1
bgt p1
exg d0,d2 ;kisebb --> coords csere
exg d1,d3 ;mindig a nagyobb y-bol kell huzni !
beq not
p1 move.w #120,d5 ;kepernyo szelessege
move.w d1,d4 ;nagyobb y
mulu d5,d4 ;120*y = pont sora
move.w d0,d5 ;x0
add.l a0,d4 ;$30000+x0 = pont oszlopa
lsr.w #3,d5 ;pont sora/8
add.w d5,d4 ;megkapja a pont helyet
moveq #0,d5
sub.w d1,d3 ;Y
sub.w d0,d2 ;X /x1-x2/
bpl p2
moveq #1,d5 ;x2 kisebb volt,a kapott X negativ
neg.w d2 ;most mar pozitiv X
p2 move.w d3,d1 ;Y
add.w d1,d1 ;2Y
cmp.w d2,d1 ;X-2Y
dbhi d3,p3 ;csokkenti Y-t ha
p3 move.w d3,d1 ;Y
sub.w d2,d1 ;Y-X
bpl p4
exg d2,d3 ;X csereje Y-al
p4 addx.w d5,d5
add.w d2,d2 ;2Y
move.w d2,d1 ;2Y
sub.w d3,d2 ;2Y-X
addx.w d5,d5
add.w d0,d0
move.w d2,d6
sub.w d3,d6
add.w d3,d3
ok move.w (a5,d3.w),d3 ;$58
move.w (a3,d0.w),d0 ;$40
move.b dat(pc,d5.w),d5 ;melyik siknyolcad
bsr okvonal ;vonalrajz
not movem.w (a7)+,d0/d1
dbf d7,lines
rts
dat dc.l $3431353,$b4b1757 ;siknyolcad
okvonal move.l d7,-(a7)
moveq #2,d7 ;3 lehetoseg
swap d2 ;a d2-ot felhasznalom
move.w scr+2(pc),d2 ;melyik kepernyore
loop lsr.w #1,d2 ;az also 3 bit donti el
bcc noo ;Carry=0 --> nem kell
bsr wait
swap d2 ;eredeti d2
move.w d2,$52(a6) ;2y-x
move.w d0,$40(a6) ;12-15-->sor kezdopontja /0-f/ + a4a
move.b d5,$43(a6) ;siknyolcad
move.l d4,$48(a6) ;vonal kezdocime
move.l d4,$54(a6) ;vonal kezdocime
move.w d1,$62(a6) ;2y
move.w d6,$64(a6) ;2y-2x
move.w d3,$58(a6) ;szelesseg=2 , magassag=vonal hossza
swap d2
noo add.l #$28,d4 ;kovetkezo kepernyo
dbf d7,loop
move.l (a7)+,d7
rts
fill move.l erno(pc),a0
add.l #28+[200*$78],a0
bsr wait ;uzemmodban dolgozik
move.l #$9f00012,$40(a6)
move.w #$28-[[11*16]/8],$64(a6)
move.w #$28-[[11*16]/8],$66(a6)
move.l a0,$50(a6)
move.l a0,$54(a6)
move.w #$8a0b,$58(a6) ;feltolt
rts
calcul move.w (a3,d5.w),d4 ;cos ertek
move.w (a1,d5.w),d5 ;sin ertek
move.w d0,d2 ;c1
move.w d1,d3 ;c2
muls d4,d0 ;c1*cos(c0angle)
muls d5,d1 ;c2*sin(c0angle)
muls d4,d3 ;c2*cos(c0angle)
muls d5,d2 ;c1*sin(c0angle)
sub.l d1,d0 ;c1*cos(c0angle)-c2*sin(c0angle)
add.l d2,d3 ;c2*cos(c0angle)+c1*sin(c0angle)
add.l d0,d0
add.l d3,d3
swap d0 ;uj c1
swap d3 ;uj c2
move.w d6,d1
rts
wait btst #$e,2(a6) ;waitblitter
bne wait
rts
copper dc.w $100,$200,$8e,$2c81,$90,$2cc1,$92,$38,$94,$d0
dc.w $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
dc.w $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
dc.w $180,0,$108,$50,$10a,$50,$182
copcol dc.w 0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $e0,3,$e4,3,$e8,3,$e2
copscr dc.w 0,$e6,$28,$ea,$50
dc.w $3001,$fffe,$100,$3200,$180,$ff0,$3101,$fffe,$180,$124
dc.w $f001,$fffe,$100,$200,$180,$ff0,$f101,$fffe,$180,0
dc.w $ffff,$fffe
coords dc.w -60,60,60,60,60,60,60,-60,60,-60,-60,60,-60,60,-60
dc.w 60,60,-60,60,-60,-60,-60,-60,-60
dc.w -45,40,60,-15,-40,60,0,-15,60,15,-40,60,45,40,60
dc.w 15,40,60,5,0,60,0,25,60,-5,0,60,-15,40,60 ;w
dc.w -35,40,-60,-35,-40,-60,-5,-40,-60,-5,-10,-60,5,-40,-60
dc.w 45,-40,-60,15,0,-60,35,10,-60,35,30,-60,15,40,-60 ;r
dc.w -30,-60,-40,-30,-60,40,30,-60,40,30,-60,20,0,-60,20
dc.w 0,-60,-20,30,-60,-20,30,-60,-40 ;c
dc.w -30,60,-40,-30,60,40,0,60,40,0,60,10,20,60,10,20,60,-10
dc.w 0,60,-10,0,60,-20,30,60,-20,30,60,-40 ;f
dc.w 60,40,15,60,-40,15,60,-40,-15,60,40,-15 ;i
dc.w -60,40,30,-60,-40,30,-60,-40,-30,-60,-20,-30,-60,-20,0
dc.w -60,-10,0,-60,-10,-20,-60,10,-20,-60,10,0,-60,20,0
dc.w -60,20,-30,-60,40,-30 ;e
;1:alap 2:alap+$28 3:alap,alap+$28 4:alap+$50 5:alap,alap+$50
;6:alap+$28,alap+$50 7:alap,alap+$28,alap+$50
meghat dc.w 12
dc.l 3,kot1,1,$00400000
dc.l 3,kot2,1,$00400000
dc.l 3,kot3,2,$00400004
dc.l 3,kot4,2,$00400004
dc.l 3,kot5,3,$00400008
dc.l 3,kot6,3,$00400008
dc.l 9,kot7,4,$0000000c
dc.l 9,kot8,4,$0000000c
dc.l 7,kot9,5,$00000010
dc.l 9,kot10,5,$00000010
dc.l 3,kot11,6,$00000014
dc.l 11,kot12,6,$00000014
kot1 dc.w 0,4,8,12,0
kot2 dc.w 16,28,24,20,16
kot3 dc.w 4,20,24,8,4
kot4 dc.w 0,12,28,16,0
kot5 dc.w 0,16,20,4,0
kot6 dc.w 8,24,28,12,8
kot7 dc.w 32,68,64,60,56,52,48,44,40,36,32
kot8 dc.w 72,76,80,84,88,92,96,100,104,108,72
kot9 dc.w 112,116,120,124,128,132,136,140,112
kot10 dc.w 144,180,176,172,168,164,160,156,152,148,144
kot11 dc.w 184,196,192,188,184
kot12 dc.w 200,204,208,212,216,220,224,228,232,236,240,244,200
colors blk.w 16,0
; kek
dc.w 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
; piros
dc.w 0,$100,$200,$300,$400,$500,$600,$700,$800,$900,$a00,$b00
dc.w $c00,$d00,$e00,$f00
; zold
dc.w 0,$10,$20,$30,$40,$50,$60,$70,$80,$90,$a0,$b0,$c0,$d0,$e0,$f0
; sarga
dc.w 0,$110,$220,$330,$440,$550,$660,$770,$880,$990,$aa0,$bb0,$cc0
dc.w $dd0,$ee0,$ff0
; lila
dc.w 0,$101,$202,$303,$404,$505,$606,$707,$808,$909,$a0a,$b0b,$c0c
dc.w $d0d,$e0e,$f0f
; cyan
dc.w 0,$11,$22,$33,$44,$55,$66,$77,$88,$99,$aa,$bb,$cc,$dd,$ee,$ff
; feher
dc.w 0,$111,$222,$333,$444,$555,$666,$777,$888,$999,$aaa,$bbb,$ccc
dc.w $ddd,$eee,$fff
addx dc.w 0 ;xangle
addy dc.w 0 ;yangle
addz dc.w 0 ;zangle
lap dc.w 0 ;siklapok szama/object
scr dc.l 0 ;kepernyo
col dc.l 0 ;color , coppercolor
erno dc.l $38000 ;kepernyo
sinus incbin "Coleccion_Sources1:Sources/Vectores/raytr.dat"
tarolo blk.b 100,0